import axios from 'axios'
import Cookie from 'js-cookie'
import Base from '../Base64'
import qs from 'qs';

let token = Cookie.get("token")
// 创建一个新的实例
const instance = axios.create({
    baseURL: 'http://192.168.1.84:8081/m.api',
    timeout: 1000
});
// 在新的实例instance上添加拦截器
// 1.请求拦截
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    //在配置中添加请求头,token
    config.headers["AdminToken"] = token;
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});
// 2.响应拦截
instance.interceptors.response.use(async response => {
        // 对响应数据做点什么
        console.log(response)
        let res = response.data;
        if (res.errno === 200) {
            return response;
        } else if (res.errno == 10001 || res.errno == 10006) {
            //重新登录
            //令牌刷新---无痛刷新
            // 1.获取到账户和密码
            // 2.重新请求登录接口
            // 3.重新给token赋值
            // 4.aysnc 和await 同步(登录方法上面)
            // 5.重新返回config

            // 获取账户和密码password
            let username = Base.decode(Cookie.get('username'));
            let password = Base.decode(Cookie.get('password'));
            console.log(username)
            console.log(password)
            // // 重新请求登录接口
            let res = await instance.post("",
                qs.stringify({
                    _gp: 'amdin',
                    _mt: 'login',
                    username: username,
                    password: password,
                    verifyCode: 666666
                })
            )
            Cookie.set('token', res.data.data)
            if (res.data.errmsg == '成功') {
                let time = new Date().getTime();
                Cookie.set('token', res.data.data, {
                    expires: new Date(time + 60 * 1000 * 20)
                })
                response.config.headers["AdminToken"] = Cookie.get("token")
                return await axios(response.config)
            }
        }
        return response
    },
    function (error) {
        // 对响应错误做点什么
        return Promise.reject(error);
    });
export default instance;